package com.leo.train.business.mapper;

import com.github.pagehelper.Page;
import com.leo.train.business.dto.ConfirmOrderDto;
import com.leo.train.business.entity.ConfirmOrder;
import org.apache.ibatis.annotations.Mapper;

import java.util.Date;
import java.util.List;

@Mapper
public interface ConfirmOrderMapper {
    Page<ConfirmOrder> list(ConfirmOrderDto confirmOrderDto);

    /**
     *  新增确认订单
     * @param confirmOrder
     */
    void insert(ConfirmOrder confirmOrder);

    /**
     * 修改确认订单状态
     * @param confirmOrderForUpdate
     */
    void update(ConfirmOrder confirmOrderForUpdate);

    /**
     * 根据信息查询确认订单
     * @param date
     * @param trainCode
     * @param status 订单状态
     * @return
     */
    List<ConfirmOrder> listByInfo(Date date, String trainCode, String status);


    /**
     * 修改确认订单状态
     * @param confirmOrderForUpdate
     */
    void updateByPrimaryKeySelective(ConfirmOrder confirmOrderForUpdate);

    ConfirmOrder selectById(Long id);

    /**
     * 查询排队订单数量
     * @param date 日期
     * @param trainCode 车次编号
     * @param createTime 创建时间
     * @return 订单数量
     */
    int countQueueOrders(Date date, String trainCode, Date createTime);
    
    /**
     * 取消排队订单
     * @param id 订单ID
     * @param status 订单原状态
     * @param newStatus 订单新状态
     * @return 更新记录数
     */
    int cancelOrder(Long id, String status, String newStatus);
}